{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import numpy as np\n",
    "import segmentation_models_pytorch as smp\n",
    "# from segmentation_models_pytorch.encoders.inceptionv4 import InceptionV4Encoder\n",
    "# from pretrainedmodels.models.inceptionv4 import InceptionV4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Downloading: \"http://sceneparsing.csail.mit.edu/model/pretrained_resnet/resnet50-imagenet.pth\" to /home/khornlund/.cache/torch/checkpoints/resnet50-imagenet.pth\n"
     ]
    },
    {
     "ename": "AttributeError",
     "evalue": "'NoneType' object has no attribute 'group'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-3-95ab5b396fdf>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnet\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msmp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mUnet\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'dilated-resnet50'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0min_channels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0mnet\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoder\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/bb/segmentation_models.pytorch/segmentation_models_pytorch/unet/model.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, encoder_name, encoder_weights, decoder_use_batchnorm, decoder_channels, classes, activation, center, attention_type, in_channels, dropout, weight_std)\u001b[0m\n\u001b[1;32m     46\u001b[0m             \u001b[0mencoder_name\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     47\u001b[0m             \u001b[0mencoder_weights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencoder_weights\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m             \u001b[0min_channels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0min_channels\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     49\u001b[0m         )\n\u001b[1;32m     50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/bb/segmentation_models.pytorch/segmentation_models_pytorch/encoders/__init__.py\u001b[0m in \u001b[0;36mget_encoder\u001b[0;34m(name, encoder_weights, in_channels)\u001b[0m\n\u001b[1;32m     37\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mencoder_weights\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     38\u001b[0m         \u001b[0msettings\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mencoders\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'pretrained_settings'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mencoder_weights\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m         \u001b[0mstate_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel_zoo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msettings\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'url'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     40\u001b[0m         \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mencoder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_state_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstate_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     41\u001b[0m         \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'Load result: {r}'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/.conda/envs/sever/lib/python3.6/site-packages/torch/hub.py\u001b[0m in \u001b[0;36mload_state_dict_from_url\u001b[0;34m(url, model_dir, map_location, progress)\u001b[0m\n\u001b[1;32m    459\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcached_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    460\u001b[0m         \u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstderr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Downloading: \"{}\" to {}\\n'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcached_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 461\u001b[0;31m         \u001b[0mhash_prefix\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mHASH_REGEX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    462\u001b[0m         \u001b[0m_download_url_to_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcached_file\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhash_prefix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mprogress\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mprogress\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    463\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcached_file\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmap_location\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmap_location\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'group'"
     ]
    }
   ],
   "source": [
    "net = smp.Unet('dilated-resnet101', in_channels='r')\n",
    "net.encoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.zeros((2, 1, 256, 416))\n",
    "with torch.no_grad():\n",
    "    output = net.encoder(x)\n",
    "print([o.size() for o in output])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "InceptionV4(\n",
       "  (features): Sequential(\n",
       "    (0): BasicConv2d(\n",
       "      (conv): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "      (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (1): BasicConv2d(\n",
       "      (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (2): BasicConv2d(\n",
       "      (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "    )\n",
       "    (3): Mixed_3a(\n",
       "      (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "      (conv): BasicConv2d(\n",
       "        (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "    )\n",
       "    (4): Mixed_4a(\n",
       "      (branch0): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(160, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(160, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(64, 64, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (5): Mixed_5a(\n",
       "      (conv): BasicConv2d(\n",
       "        (conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (6): Inception_A(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (7): Inception_A(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (8): Inception_A(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (9): Inception_A(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(384, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (10): Reduction_A(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(384, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (11): Inception_B(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1024, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(224, 224, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (4): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (12): Inception_B(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1024, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(224, 224, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (4): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (13): Inception_B(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1024, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(224, 224, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (4): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (14): Inception_B(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1024, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(224, 224, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (4): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (15): Inception_B(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1024, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(224, 224, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (4): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (16): Inception_B(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1024, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(224, 224, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (4): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (17): Inception_B(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1024, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(224, 224, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (4): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (18): Reduction_B(\n",
       "      (branch0): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(256, 256, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(256, 320, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(320, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "        (3): BasicConv2d(\n",
       "          (conv): Conv2d(320, 320, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "          (bn): BatchNorm2d(320, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "      (branch2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (19): Inception_C(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_1a): BasicConv2d(\n",
       "        (conv): Conv2d(384, 256, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_1b): BasicConv2d(\n",
       "        (conv): Conv2d(384, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_1): BasicConv2d(\n",
       "        (conv): Conv2d(384, 448, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(448, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_2): BasicConv2d(\n",
       "        (conv): Conv2d(448, 512, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(512, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_3a): BasicConv2d(\n",
       "        (conv): Conv2d(512, 256, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_3b): BasicConv2d(\n",
       "        (conv): Conv2d(512, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1536, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (20): Inception_C(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_1a): BasicConv2d(\n",
       "        (conv): Conv2d(384, 256, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_1b): BasicConv2d(\n",
       "        (conv): Conv2d(384, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_1): BasicConv2d(\n",
       "        (conv): Conv2d(384, 448, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(448, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_2): BasicConv2d(\n",
       "        (conv): Conv2d(448, 512, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(512, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_3a): BasicConv2d(\n",
       "        (conv): Conv2d(512, 256, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_3b): BasicConv2d(\n",
       "        (conv): Conv2d(512, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1536, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (21): Inception_C(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_1a): BasicConv2d(\n",
       "        (conv): Conv2d(384, 256, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch1_1b): BasicConv2d(\n",
       "        (conv): Conv2d(384, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_0): BasicConv2d(\n",
       "        (conv): Conv2d(1536, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_1): BasicConv2d(\n",
       "        (conv): Conv2d(384, 448, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(448, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_2): BasicConv2d(\n",
       "        (conv): Conv2d(448, 512, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(512, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_3a): BasicConv2d(\n",
       "        (conv): Conv2d(512, 256, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch2_3b): BasicConv2d(\n",
       "        (conv): Conv2d(512, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU(inplace=True)\n",
       "      )\n",
       "      (branch3): Sequential(\n",
       "        (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(1536, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU(inplace=True)\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (avg_pool): AvgPool2d(kernel_size=8, stride=8, padding=0)\n",
       "  (last_linear): Linear(in_features=1536, out_features=1001, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net = InceptionV4()\n",
    "net"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "22"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(net.features)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([2, 32, 127, 207])\n",
      "torch.Size([2, 32, 125, 205])\n",
      "torch.Size([2, 64, 125, 205])\n",
      "torch.Size([2, 160, 62, 102])\n",
      "torch.Size([2, 192, 60, 100])\n",
      "torch.Size([2, 384, 29, 49])\n",
      "torch.Size([2, 384, 29, 49])\n",
      "torch.Size([2, 384, 29, 49])\n",
      "torch.Size([2, 384, 29, 49])\n",
      "torch.Size([2, 384, 29, 49])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1024, 14, 24])\n",
      "torch.Size([2, 1536, 6, 11])\n",
      "torch.Size([2, 1536, 6, 11])\n",
      "torch.Size([2, 1536, 6, 11])\n",
      "torch.Size([2, 1536, 6, 11])\n"
     ]
    }
   ],
   "source": [
    "x = torch.zeros((2, 3, 256, 416))\n",
    "with torch.no_grad():\n",
    "    for f in net.features:\n",
    "        x = f(x)\n",
    "        print(x.size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Load result: None\n"
     ]
    }
   ],
   "source": [
    "net = smp.Unet('inceptionresnetv2', in_channels='r')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "InceptionResNetV2Encoder(\n",
       "  (conv2d_1a): BasicConv2d(\n",
       "    (conv): Conv2d(1, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (relu): ReLU()\n",
       "  )\n",
       "  (conv2d_2a): BasicConv2d(\n",
       "    (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (relu): ReLU()\n",
       "  )\n",
       "  (conv2d_2b): BasicConv2d(\n",
       "    (conv): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (relu): ReLU()\n",
       "  )\n",
       "  (maxpool_3a): MaxPool2d(kernel_size=3, stride=2, padding=(1, 1), dilation=1, ceil_mode=False)\n",
       "  (conv2d_3b): BasicConv2d(\n",
       "    (conv): Conv2d(64, 80, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(80, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (relu): ReLU()\n",
       "  )\n",
       "  (conv2d_4a): BasicConv2d(\n",
       "    (conv): Conv2d(80, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (relu): ReLU()\n",
       "  )\n",
       "  (maxpool_5a): MaxPool2d(kernel_size=3, stride=2, padding=(1, 1), dilation=1, ceil_mode=False)\n",
       "  (mixed_5b): Mixed_5b(\n",
       "    (branch0): BasicConv2d(\n",
       "      (conv): Conv2d(192, 96, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (branch1): Sequential(\n",
       "      (0): BasicConv2d(\n",
       "        (conv): Conv2d(192, 48, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(48, 64, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "    (branch2): Sequential(\n",
       "      (0): BasicConv2d(\n",
       "        (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(64, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (2): BasicConv2d(\n",
       "        (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "    (branch3): Sequential(\n",
       "      (0): AvgPool2d(kernel_size=3, stride=1, padding=1)\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (repeat): Sequential(\n",
       "    (0): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (1): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (2): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (3): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (4): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (5): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (6): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (7): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (8): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (9): Block35(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (branch2): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(320, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(32, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(32, 48, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(48, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(48, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(64, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(128, 320, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "  )\n",
       "  (mixed_6a): Mixed_6a(\n",
       "    (branch0): BasicConv2d(\n",
       "      (conv): Conv2d(320, 384, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (branch1): Sequential(\n",
       "      (0): BasicConv2d(\n",
       "        (conv): Conv2d(320, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (2): BasicConv2d(\n",
       "        (conv): Conv2d(256, 384, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "    (branch2): MaxPool2d(kernel_size=3, stride=2, padding=(1, 1), dilation=1, ceil_mode=False)\n",
       "  )\n",
       "  (repeat_1): Sequential(\n",
       "    (0): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (1): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (2): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (3): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (4): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (5): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (6): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (7): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (8): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (9): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (10): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (11): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (12): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (13): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (14): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (15): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (16): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (17): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (18): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (19): Block17(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(1088, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(128, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(128, 160, kernel_size=(1, 7), stride=(1, 1), padding=(0, 3), bias=False)\n",
       "          (bn): BatchNorm2d(160, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(160, 192, kernel_size=(7, 1), stride=(1, 1), padding=(3, 0), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(384, 1088, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "  )\n",
       "  (mixed_7a): Mixed_7a(\n",
       "    (branch0): Sequential(\n",
       "      (0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(256, 384, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(384, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "    (branch1): Sequential(\n",
       "      (0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(256, 288, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(288, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "    (branch2): Sequential(\n",
       "      (0): BasicConv2d(\n",
       "        (conv): Conv2d(1088, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(256, 288, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(288, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (2): BasicConv2d(\n",
       "        (conv): Conv2d(288, 320, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(320, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "    (branch3): MaxPool2d(kernel_size=3, stride=2, padding=(1, 1), dilation=1, ceil_mode=False)\n",
       "  )\n",
       "  (repeat_2): Sequential(\n",
       "    (0): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (1): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (2): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (3): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (4): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (5): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (6): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (7): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (8): Block8(\n",
       "      (branch0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (branch1): Sequential(\n",
       "        (0): BasicConv2d(\n",
       "          (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "          (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (1): BasicConv2d(\n",
       "          (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "          (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "        (2): BasicConv2d(\n",
       "          (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "          (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "          (relu): ReLU()\n",
       "        )\n",
       "      )\n",
       "      (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "  )\n",
       "  (block8): Block8(\n",
       "    (branch0): BasicConv2d(\n",
       "      (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU()\n",
       "    )\n",
       "    (branch1): Sequential(\n",
       "      (0): BasicConv2d(\n",
       "        (conv): Conv2d(2080, 192, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(192, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (1): BasicConv2d(\n",
       "        (conv): Conv2d(192, 224, kernel_size=(1, 3), stride=(1, 1), padding=(0, 1), bias=False)\n",
       "        (bn): BatchNorm2d(224, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "      (2): BasicConv2d(\n",
       "        (conv): Conv2d(224, 256, kernel_size=(3, 1), stride=(1, 1), padding=(1, 0), bias=False)\n",
       "        (bn): BatchNorm2d(256, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu): ReLU()\n",
       "      )\n",
       "    )\n",
       "    (conv2d): Conv2d(448, 2080, kernel_size=(1, 1), stride=(1, 1))\n",
       "  )\n",
       "  (conv2d_7b): BasicConv2d(\n",
       "    (conv): Conv2d(2080, 1536, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "    (bn): BatchNorm2d(1536, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (relu): ReLU()\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "net.encoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "43157688"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 7851297\n",
    "# 11230529\n",
    "params = sum([np.prod(p.size()) for p in net.encoder.parameters()])\n",
    "params"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([2, 1, 256, 416])\n"
     ]
    }
   ],
   "source": [
    "x = torch.zeros((2, 1, 256, 416))\n",
    "with torch.no_grad():\n",
    "    output = net(x)\n",
    "print(output.size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "416"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "384 + 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "448"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "416 + 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "480"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "448 + 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "512"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "480 + 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "544"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "512 + 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "224"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "256 - 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "class conv_block_nested(nn.Module):\n",
    "    \n",
    "    def __init__(self, in_ch, mid_ch, out_ch):\n",
    "        super(conv_block_nested, self).__init__()\n",
    "        self.activation = nn.ReLU(inplace=True)\n",
    "        self.conv1 = nn.Conv2d(in_ch, mid_ch, kernel_size=3, padding=1, bias=True)\n",
    "        self.bn1 = nn.BatchNorm2d(mid_ch)\n",
    "        self.conv2 = nn.Conv2d(mid_ch, out_ch, kernel_size=3, padding=1, bias=True)\n",
    "        self.bn2 = nn.BatchNorm2d(out_ch)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.conv1(x)\n",
    "        x = self.bn1(x)\n",
    "        x = self.activation(x)\n",
    "        \n",
    "        x = self.conv2(x)\n",
    "        x = self.bn2(x)\n",
    "        output = self.activation(x)\n",
    "\n",
    "        return output\n",
    "\n",
    "class NestedUNet(nn.Module):\n",
    "    \"\"\"\n",
    "    Implementation of this paper:\n",
    "    https://arxiv.org/pdf/1807.10165.pdf\n",
    "    \"\"\"\n",
    "    def __init__(self, in_ch=3, out_ch=1):\n",
    "        super(NestedUNet, self).__init__()\n",
    "\n",
    "        n1 = 64\n",
    "        filters = [n1, n1 * 2, n1 * 4, n1 * 8, n1 * 16]\n",
    "\n",
    "        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)\n",
    "        self.Up = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True)\n",
    "\n",
    "        self.conv0_0 = conv_block_nested(in_ch, filters[0], filters[0])\n",
    "        self.conv1_0 = conv_block_nested(filters[0], filters[1], filters[1])\n",
    "        self.conv2_0 = conv_block_nested(filters[1], filters[2], filters[2])\n",
    "        self.conv3_0 = conv_block_nested(filters[2], filters[3], filters[3])\n",
    "        self.conv4_0 = conv_block_nested(filters[3], filters[4], filters[4])\n",
    "\n",
    "        self.conv0_1 = conv_block_nested(filters[0] + filters[1], filters[0], filters[0])\n",
    "        self.conv1_1 = conv_block_nested(filters[1] + filters[2], filters[1], filters[1])\n",
    "        self.conv2_1 = conv_block_nested(filters[2] + filters[3], filters[2], filters[2])\n",
    "        self.conv3_1 = conv_block_nested(filters[3] + filters[4], filters[3], filters[3])\n",
    "\n",
    "        self.conv0_2 = conv_block_nested(filters[0]*2 + filters[1], filters[0], filters[0])\n",
    "        self.conv1_2 = conv_block_nested(filters[1]*2 + filters[2], filters[1], filters[1])\n",
    "        self.conv2_2 = conv_block_nested(filters[2]*2 + filters[3], filters[2], filters[2])\n",
    "\n",
    "        self.conv0_3 = conv_block_nested(filters[0]*3 + filters[1], filters[0], filters[0])\n",
    "        self.conv1_3 = conv_block_nested(filters[1]*3 + filters[2], filters[1], filters[1])\n",
    "\n",
    "        self.conv0_4 = conv_block_nested(filters[0]*4 + filters[1], filters[0], filters[0])\n",
    "\n",
    "        self.final = nn.Conv2d(filters[0], out_ch, kernel_size=1)\n",
    "\n",
    "    def features(self, x):\n",
    "        x0_0 = self.conv0_0(x)\n",
    "        x1_0 = self.conv1_0(self.pool(x0_0))\n",
    "        x2_0 = self.conv2_0(self.pool(x1_0))\n",
    "        x3_0 = self.conv3_0(self.pool(x2_0))\n",
    "        x4_0 = self.conv4_0(self.pool(x3_0))\n",
    "        \n",
    "        return [x4_0, x3_0, x2_0, x1_0, x0_0]\n",
    "        \n",
    "    def forward(self, x):\n",
    "        x4_0, x3_0, x2_0, x1_0, x0_0 = self.features(x)\n",
    "        print(x4_0.size())\n",
    "        print(x3_0.size())\n",
    "        print(x2_0.size())\n",
    "        print(x1_0.size())\n",
    "        print(x0_0.size())\n",
    "        \n",
    "        x0_1 = self.conv0_1(torch.cat([x0_0, self.Up(x1_0)], 1))\n",
    "        \n",
    "        x1_1 = self.conv1_1(torch.cat([x1_0, self.Up(x2_0)], 1))\n",
    "        x0_2 = self.conv0_2(torch.cat([x0_0, x0_1, self.Up(x1_1)], 1))\n",
    "        \n",
    "        x2_1 = self.conv2_1(torch.cat([x2_0, self.Up(x3_0)], 1))\n",
    "        x1_2 = self.conv1_2(torch.cat([x1_0, x1_1, self.Up(x2_1)], 1))\n",
    "        x0_3 = self.conv0_3(torch.cat([x0_0, x0_1, x0_2, self.Up(x1_2)], 1))\n",
    "        \n",
    "        x3_1 = self.conv3_1(torch.cat([x3_0, self.Up(x4_0)], 1))\n",
    "        x2_2 = self.conv2_2(torch.cat([x2_0, x2_1, self.Up(x3_1)], 1))\n",
    "        x1_3 = self.conv1_3(torch.cat([x1_0, x1_1, x1_2, self.Up(x2_2)], 1))\n",
    "        x0_4 = self.conv0_4(torch.cat([x0_0, x0_1, x0_2, x0_3, self.Up(x1_3)], 1))\n",
    "\n",
    "        output = self.final(x0_4)\n",
    "        return output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NestedUNet(\n",
       "  (pool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
       "  (Up): Upsample(scale_factor=2.0, mode=bilinear)\n",
       "  (conv0_0): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv1_0): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv2_0): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv3_0): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv4_0): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv0_1): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(192, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv1_1): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(384, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv2_1): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(768, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv3_1): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(1536, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv0_2): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(256, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv1_2): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(512, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv2_2): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(1024, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv0_3): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(320, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv1_3): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(640, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (conv0_4): conv_block_nested(\n",
       "    (activation): ReLU(inplace=True)\n",
       "    (conv1): Conv2d(384, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
       "    (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (final): Conv2d(64, 1, kernel_size=(1, 1), stride=(1, 1))\n",
       ")"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = NestedUNet()\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([2, 1024, 16, 26])\n",
      "torch.Size([2, 512, 32, 52])\n",
      "torch.Size([2, 256, 64, 104])\n",
      "torch.Size([2, 128, 128, 208])\n",
      "torch.Size([2, 64, 256, 416])\n",
      "torch.Size([2, 1, 256, 416])\n"
     ]
    }
   ],
   "source": [
    "x = torch.zeros((2, 3, 256, 416))\n",
    "with torch.no_grad():\n",
    "    output = model(x)\n",
    "print(output.size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 r\n",
      "Load result: None\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Unet(\n",
       "  (encoder): PNASNet5LargeEncoder(\n",
       "    (conv_0): Sequential(\n",
       "      (conv): Conv2d(1, 96, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (cell_stem_0): CellStem0(\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(96, 96, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=96, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): Sequential(\n",
       "        (max_pool): MaxPool(\n",
       "          (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "        )\n",
       "        (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(96, 96, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=96, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_4_right): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(54, 54, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_stem_1): Cell(\n",
       "      (conv_prev_1x1): FactorizedReduction(\n",
       "        (relu): ReLU()\n",
       "        (path_1): Sequential(\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (path_2): Sequential(\n",
       "          (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (final_path_bn): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(270, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_4_right): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(108, 108, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_0): Cell(\n",
       "      (conv_prev_1x1): FactorizedReduction(\n",
       "        (relu): ReLU()\n",
       "        (path_1): Sequential(\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(270, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (path_2): Sequential(\n",
       "          (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(270, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (final_path_bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(540, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_1): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(540, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_2): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_3): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_4): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(1080, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(1080, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_4_right): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(432, 432, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_5): Cell(\n",
       "      (conv_prev_1x1): FactorizedReduction(\n",
       "        (relu): ReLU()\n",
       "        (path_1): Sequential(\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (path_2): Sequential(\n",
       "          (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (final_path_bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_6): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_7): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_8): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(2160, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(2160, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_4_right): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(864, 864, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_9): Cell(\n",
       "      (conv_prev_1x1): FactorizedReduction(\n",
       "        (relu): ReLU()\n",
       "        (path_1): Sequential(\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (path_2): Sequential(\n",
       "          (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "          (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "          (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (final_path_bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_10): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (cell_11): Cell(\n",
       "      (conv_prev_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (conv_1x1): ReluConvBn(\n",
       "        (relu): ReLU()\n",
       "        (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_0_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_1_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_1_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_2_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_2_right): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "      (comb_iter_3_right): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (comb_iter_4_left): BranchSeparables(\n",
       "        (relu_1): ReLU()\n",
       "        (separable_1): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "        (relu_2): ReLU()\n",
       "        (separable_2): SeparableConv2d(\n",
       "          (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "          (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "        )\n",
       "        (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "  )\n",
       "  (decoder): UnetDecoder(\n",
       "    (center): CenterBlock(\n",
       "      (attention1): Identity()\n",
       "      (attention2): Identity()\n",
       "      (dropout): Dropout(p=0, inplace=False)\n",
       "      (block): Sequential(\n",
       "        (0): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(4320, 4320, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(4320, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "        (1): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(4320, 4320, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(4320, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (layer1): DecoderBlock(\n",
       "      (attention1): Identity()\n",
       "      (attention2): Identity()\n",
       "      (dropout): Dropout(p=0, inplace=False)\n",
       "      (block): Sequential(\n",
       "        (0): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(6480, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "        (1): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (layer2): DecoderBlock(\n",
       "      (attention1): Identity()\n",
       "      (attention2): Identity()\n",
       "      (dropout): Dropout(p=0, inplace=False)\n",
       "      (block): Sequential(\n",
       "        (0): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(1336, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "        (1): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (layer3): DecoderBlock(\n",
       "      (attention1): Identity()\n",
       "      (attention2): Identity()\n",
       "      (dropout): Dropout(p=0, inplace=False)\n",
       "      (block): Sequential(\n",
       "        (0): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(398, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "        (1): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (layer4): DecoderBlock(\n",
       "      (attention1): Identity()\n",
       "      (attention2): Identity()\n",
       "      (dropout): Dropout(p=0, inplace=False)\n",
       "      (block): Sequential(\n",
       "        (0): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(160, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "        (1): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (layer5): DecoderBlock(\n",
       "      (attention1): Identity()\n",
       "      (attention2): Identity()\n",
       "      (dropout): Dropout(p=0, inplace=False)\n",
       "      (block): Sequential(\n",
       "        (0): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(32, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "        (1): Conv2dReLU(\n",
       "          (block): Sequential(\n",
       "            (0): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "            (1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "            (2): ReLU(inplace=True)\n",
       "          )\n",
       "        )\n",
       "      )\n",
       "    )\n",
       "    (final_conv): Conv2d(16, 1, kernel_size=(1, 1), stride=(1, 1))\n",
       "  )\n",
       "  (activation): Sigmoid()\n",
       ")"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = smp.Unet('pnasnet-5large', center=True, in_channels='r')\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([2, 96, 128, 208])\n",
      "torch.Size([2, 270, 64, 104])\n",
      "torch.Size([2, 1080, 32, 52])\n",
      "torch.Size([2, 2160, 16, 26])\n",
      "torch.Size([2, 4320, 8, 13])\n",
      "torch.Size([2, 1, 256, 416])\n"
     ]
    }
   ],
   "source": [
    "x = torch.zeros((2, 1, 256, 416))\n",
    "with torch.no_grad():\n",
    "    output = model(x)\n",
    "print(output.size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Downloading: \"http://data.lip6.fr/cadene/pretrainedmodels/pnasnet5large-bf079911.pth\" to /home/khornlund/.cache/torch/checkpoints/pnasnet5large-bf079911.pth\n",
      "100%|██████████| 329M/329M [16:12<00:00, 355kB/s]    \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "PNASNet5Large(\n",
       "  (conv_0): Sequential(\n",
       "    (conv): Conv2d(3, 96, kernel_size=(3, 3), stride=(2, 2), bias=False)\n",
       "    (bn): BatchNorm2d(96, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  )\n",
       "  (cell_stem_0): CellStem0(\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(96, 96, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=96, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): Sequential(\n",
       "      (max_pool): MaxPool(\n",
       "        (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "      )\n",
       "      (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(96, 96, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=96, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(54, 54, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=54, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(54, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_4_right): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(54, 54, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "      (bn): BatchNorm2d(54, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_stem_1): Cell(\n",
       "    (conv_prev_1x1): FactorizedReduction(\n",
       "      (relu): ReLU()\n",
       "      (path_1): Sequential(\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (path_2): Sequential(\n",
       "        (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(96, 54, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (final_path_bn): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(270, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(108, 108, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=108, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(108, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_4_right): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(108, 108, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "      (bn): BatchNorm2d(108, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_0): Cell(\n",
       "    (conv_prev_1x1): FactorizedReduction(\n",
       "      (relu): ReLU()\n",
       "      (path_1): Sequential(\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(270, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (path_2): Sequential(\n",
       "        (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(270, 108, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (final_path_bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(540, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_1): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(540, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_2): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_3): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(216, 216, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=216, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(216, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(216, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_4): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(1080, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(1080, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (zero_pad): ZeroPad2d(padding=(1, 0, 1, 0), value=0.0)\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_4_right): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(432, 432, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_5): Cell(\n",
       "    (conv_prev_1x1): FactorizedReduction(\n",
       "      (relu): ReLU()\n",
       "      (path_1): Sequential(\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (path_2): Sequential(\n",
       "        (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(1080, 216, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (final_path_bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_6): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_7): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(432, 432, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=432, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(432, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(432, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_8): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(2160, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(2160, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_4_right): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(864, 864, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_9): Cell(\n",
       "    (conv_prev_1x1): FactorizedReduction(\n",
       "      (relu): ReLU()\n",
       "      (path_1): Sequential(\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (path_2): Sequential(\n",
       "        (pad): ZeroPad2d(padding=(0, 1, 0, 1), value=0.0)\n",
       "        (avgpool): AvgPool2d(kernel_size=1, stride=2, padding=0)\n",
       "        (conv): Conv2d(2160, 432, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (final_path_bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_10): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (cell_11): Cell(\n",
       "    (conv_prev_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (conv_1x1): ReluConvBn(\n",
       "      (relu): ReLU()\n",
       "      (conv): Conv2d(4320, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      (bn): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_0_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_1_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(7, 7), stride=(1, 1), padding=(3, 3), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_1_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_2_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_2_right): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (comb_iter_3_right): MaxPool(\n",
       "      (pool): MaxPool2d(kernel_size=3, stride=1, padding=1, dilation=1, ceil_mode=False)\n",
       "    )\n",
       "    (comb_iter_4_left): BranchSeparables(\n",
       "      (relu_1): ReLU()\n",
       "      (separable_1): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_1): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu_2): ReLU()\n",
       "      (separable_2): SeparableConv2d(\n",
       "        (depthwise_conv2d): Conv2d(864, 864, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=864, bias=False)\n",
       "        (pointwise_conv2d): Conv2d(864, 864, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
       "      )\n",
       "      (bn_sep_2): BatchNorm2d(864, eps=0.001, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (relu): ReLU()\n",
       "  (avg_pool): AvgPool2d(kernel_size=11, stride=1, padding=0)\n",
       "  (dropout): Dropout(p=0.5, inplace=False)\n",
       "  (last_linear): Linear(in_features=4320, out_features=1000, bias=True)\n",
       ")"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = pnasnet5large(num_classes=1000, pretrained='imagenet')\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "down torch.Size([2, 96, 128, 207])\n",
      "down torch.Size([2, 270, 64, 104])\n",
      "down torch.Size([2, 540, 32, 52])\n",
      "torch.Size([2, 1080, 32, 52])\n",
      "torch.Size([2, 1080, 32, 52])\n",
      "torch.Size([2, 1080, 32, 52])\n",
      "torch.Size([2, 1080, 32, 52])\n",
      "down torch.Size([2, 2160, 16, 26])\n",
      "torch.Size([2, 2160, 16, 26])\n",
      "torch.Size([2, 2160, 16, 26])\n",
      "torch.Size([2, 2160, 16, 26])\n",
      "down torch.Size([2, 4320, 8, 13])\n",
      "torch.Size([2, 4320, 8, 13])\n",
      "torch.Size([2, 4320, 8, 13])\n",
      "torch.Size([2, 4320, 8, 13])\n"
     ]
    }
   ],
   "source": [
    "x = torch.zeros((2, 3, 257, 416))\n",
    "with torch.no_grad():\n",
    "    x_conv_0  = model.conv_0(x)  # downsize, needs padding\n",
    "    print('down', x_conv_0.size())\n",
    "    x_stem_0  = model.cell_stem_0(x_conv_0)  # downsize\n",
    "    print('down', x_stem_0.size())\n",
    "    x_stem_1  = model.cell_stem_1(x_conv_0, x_stem_0)  # downsize\n",
    "    print('down', x_stem_1.size())\n",
    "    x_cell_0  = model.cell_0(x_stem_0, x_stem_1)\n",
    "    print(x_cell_0.size())\n",
    "    x_cell_1  = model.cell_1(x_stem_1, x_cell_0)\n",
    "    print(x_cell_1.size())\n",
    "    x_cell_2  = model.cell_2(x_cell_0, x_cell_1)\n",
    "    print(x_cell_2.size())\n",
    "    x_cell_3  = model.cell_3(x_cell_1, x_cell_2)\n",
    "    print(x_cell_3.size())\n",
    "    x_cell_4  = model.cell_4(x_cell_2, x_cell_3)  # downsize\n",
    "    print('down', x_cell_4.size())\n",
    "    x_cell_5  = model.cell_5(x_cell_3, x_cell_4)\n",
    "    print(x_cell_5.size())\n",
    "    x_cell_6  = model.cell_6(x_cell_4, x_cell_5)\n",
    "    print(x_cell_6.size())\n",
    "    x_cell_7  = model.cell_7(x_cell_5, x_cell_6)\n",
    "    print(x_cell_7.size())\n",
    "    x_cell_8  = model.cell_8(x_cell_6, x_cell_7)  # downsize\n",
    "    print('down', x_cell_8.size())\n",
    "    x_cell_9  = model.cell_9(x_cell_7, x_cell_8)\n",
    "    print(x_cell_9.size())\n",
    "    x_cell_10 = model.cell_10(x_cell_8, x_cell_9)\n",
    "    print(x_cell_10.size())\n",
    "    x_cell_11 = model.cell_11(x_cell_9, x_cell_10)\n",
    "    print(x_cell_11.size())\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
